home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / hamrad3.arc / COMBLINE.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  2.2 KB  |  43 lines

  1. 100  CLS :REM COMBLINE
  2. 110  PRINT TAB(25);"****COMBLINE FILTER DESIGN****"
  3. 120  REM J.CROMPTON FILES 1984
  4. 130  PRINT :PRINT "TYPE: CAPACITIVE-TAPPED,WITH EQUAL TERMINATIONS"
  5. 140  DIM G(10),C(10),Z(10),ZO(10,10),ZE(10,10),A(10,10)
  6. 150  PRINT :PRINT :BEEP :INPUT "CAPACITOR OR STUB LOADED STYLE (C/S)";C$
  7. 160  PRINT :BEEP :INPUT "ENTER NUMBER OF FILTER SECTIONS";N :PI=4*ATN(1)
  8. 170  PRINT :PRINT "ENTER NORMALIZED LOW PASS PROTYPE ELEMENTS :" :DR=PI/180
  9. 180  FOR I=0 TO N+1 :PRINT "G(";I;")"; :BEEP :INPUT G(I) :NEXT I
  10. 190  PRINT :BEEP :INPUT "ENTER CENTER FREQUENCY (Mhz)";FO :FO=FO*10^6
  11. 200  PRINT :BEEP :INPUT "ENTER FACTIONAL BANDWIDTH (%)";Q :Q=Q/100
  12. 210  PRINT :BEEP :INPUT "ENTER TERMINAL ZO (ohms)";RT :WO=2*PI*FO
  13. 220  PRINT :BEEP :INPUT "ENTER UNMATCHED Z (ohms)";R
  14. 230  PRINT :BEEP :INPUT "ENTER RESONATOR LENGTH   (degrees)";AR
  15. 240  IF C$="C" THEN AS=45 :GOTO 260
  16. 250  PRINT :BEEP :INPUT "ENTER TUNING STUB LENGTH (degrees)";AS
  17. 260  LR=AR*DR :LS=AS*DR :G=1/R
  18. 270  TR=SIN(LR)/COS(LR) :TS=SIN(LS)/COS(LS) :B=G*SQR(R/RT-1)
  19. 280  IF C$<>"C" THEN 290 :LF=2*LR/SIN(2*LR)+1 :GOTO 300
  20. 290  LF=2*LR/SIN(2*LR)+2*LS/SIN(2*LS)
  21. 300  GX=Q*R/(G(0)*G(1)*2) :K=B*GX*LF*TS/(1-B*GX*2*LR/SIN(2*LR))
  22. 310  Z(1)=K/B :Z(N)=Z(1) :C=1/(1+K/TS) :C(1)=B/(K*WO) :C(N)=C(1)
  23. 320  IF C$="C" THEN LC=2*LR/SIN(2*LR)+C ELSE LC=2*LR/SIN(2*LR)+C*2*LS/SIN(2*LS)
  24. 330  A(1,2)=Q*SQR(LF*LC)/(2*SQR(G(1)*G(2))) :A(N-1,N)=A(1,2)
  25. 340  ZR=GX*LC/(TR*(1-A(1,2)^2)) :PRINT :PRINT "RESONATOR Z=";INT(ZR*100)/100
  26. 350  IF N<=3 THEN 420 ELSE FOR I=1 TO 6 :FOR J=2 TO N-2 :ZT(J)=Z(J)
  27. 360  A(J,J+1)=Q*LF*(1+(A(J-1,J)^2+A(J+1,J+2)^2)/(2*SQR(G(J)*G(J+1)))
  28. 370  Z(J)=ZR*TS*TR*(1-A(J-1,J)^2-A(J,J+1)^2) :C(J)=1/(WO*Z(J)) :NEXT I :NEXT J
  29. 380  FOR J=2 TO N-2
  30. 390  IF ABS((ZT(J)-Z(J))/Z(J))>0.01 THEN PRINT "CONV. ER" :END ELSE NEXT J
  31. 400  PRINT :PRINT "CONV. ER." :END
  32. 410  NEXT J
  33. 420  IF N=2 THEN 430 ELSE J=N-1 :Z(J)=ZR*TS*TR*(1-A(J-1,J)^2-A(J,J+1)^2)
  34. 430  C(J)=1/(WO*Z(J))
  35. 440  IF C$="C" THEN 480
  36. 450  FOR J=1 TO N-1 :ZE(J,J+1)=ZR*(1+A(J,J+1)) :ZO(J,J+1)=ZR*(1-A(J,J+1))
  37. 460  PRINT :PRINT "N";J;TAB(6);"Z STUB";INT(Z(J)*100)/100;TAB(22);"; ZO EVEN (";J;J+1;")";INT(ZE(J,J+1)*100)/100;TAB(49);"; ZO ODD (";J;J+1;")";ZO(J,J+1) :NEXT J
  38. 470  J=N :PRINT :PRINT "N";J;TAB(6);"Z STUB";INT(Z(J)*100)/100; :GOTO 510
  39. 480  FOR J=1 TO N-1 :ZE(J,J+1)=ZR*(1+A(J,J+1)) :ZO(J,J+1)=ZR*(1-A(J,J+1))
  40. 490  PRINT :PRINT "N";J;TAB(6);"Loading CAP.=";INT(C(J)*10^12*100)/100;"pf";TAB(28);"; ZO EVEN (";J;J+1;")";INT(ZE(J,J+1)*100)/100;TAB(53);"; ZO ODD (";J;J+1;")";INT(ZO(J,J+1)*100)/100 :NEXT J
  41. 500  J=N :PRINT :PRINT "N";J;TAB(6);"Loading CAP.=";INT(C(J)*10^12*100)/100;"pf";
  42. 510  CG=G/(RT*B*FO) :PRINT "; Coupling Capacitors=";INT(CG*10^12*100)/100;"pf"
  43.